Diameter of binary tree [DFS]

Time: O(N); Space: O(H); easy

Given a binary tree, you need to compute the length of the diameter of the tree.

The diameter of a binary tree is the length of the longest path between any two nodes in a tree. This path may or may not pass through the root.

Example 1:

    1
   / \
  2   3
 / \
4   5

Input: root = {TreeNode} [1,2,3,4,5]

Output: 3

Explanation:

  • 3 is the length of the path [4,2,1,3] or [5,2,1,3]

Example 2:

    2
   /
  3
 /
1

Input: root = {TreeNode} [2,3,#,1]

Output: 2

[12]:
class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None